Docker ComposeによるAmazon ECS対応がGAに!コンテナをローカル環境と同じノリでECS環境で起動できるぞ!!
コンサル部のtobachi(@toda_kk)です。
先日、Docker ComposeによるAmazon ECS対応がGAになりました!
- AWSによるアナウンス
- Dockerによるアナウンス
本ブログでも過去に記事がでていましたが、Dockerでは以前からAmazon ECS対応が進んでおりdocker ecs
というコマンドがベータ版として提供されていました。
何ができるのか
今回は装いを新たにdocker compose
というコマンドで、Amazon ECSでクラスターを作成しコンテナを実行できるようになったようです。
$ docker context create ecs ${context-name} $ docker context use ${context-name} $ docker compose up
これだけです。もちろん事前にAWSアカウントの認証情報を用意しておく必要はありますが、たったこれだけでECSクラスターが作成されコンテナイメージがFargateで立ち上がります。意味がわからん。
作成されたクラスターを落とすときもdocker compose down
でOKです。どういうことなの……。
何が起こっているのか
さて、docker compose up
を実行したとき、AWSリソース上ではいったい何が起こっているのでしょうか? 公式のドキュメントを確認してみましょう。
This is what happened behind the scenes:
- You docker compose up and Docker reads the docker-compose.yaml
- Docker converts the original compose file on the fly into an AWS CloudFormation template
- Docker deploys the CloudFormation template on AWS
実態としては、CloudFormationのスタックを作成しています。 "docker-compose.yml" の内容を元にDockerが良い感じに変換し、テンプレートを作成しているようです。便利すぎる!
何に使えるのか
AWSの公式アナウンスにもあるように、コンテナをFargateでサッと立ち上げてEFSやSQSといった他のAWSリソースと連携させることができます。Fargateを軽いノリで立ち上げられるので、ちょっとした処理を動かすのにもAmazon ECSで実行するという選択肢も出てくるでしょう。
また、こうなるとローカル環境でdocker-composeを使ってコンテナを立ち上げるのと同じノリで、ECS環境で立ち上げることができます。
例えば、アプリケーション開発において動作確認の際にAWSリソース上でコンテナを動かしてみたい、というシーンもあるかと思います。そういった、アプリケーション開発者が自分でAmazon ECS環境を構築し、サッとコンテナを動かす、ということが簡単にできるようになるのではないでしょうか。
AWSおよびDockerの公式ドキュメントによれば、 "docker-compose.yml" のパラメーターとしてx-aws-*
を記述しておくと、利用するAWSリソースを指定することもできるようです。
Roadmapも公開されており、今後も開発が進んでいきそうです。より細かい設定ができるようになり、さまざまなユースケースに応用が効くようになることを期待しています。
他のデプロイツールとの組み合わせ
すでに投稿した記事でも紹介しましたが、実はほぼ同じタイミングで、AWS CopilotというAmazon ECSの新たなデプロイツールがGAになりました。
詳細はこちらの記事を参照していただきたいのですが、AWS Copilotを使うことでECS環境を簡単に構築できます。 "Environment" という形で複数の環境を簡単に構築できるので、Production環境の他に、開発のフェーズに合わせたECS環境を気軽に作成することができます。
AWS Copilotをはじめ、他のデプロイツールと組み合わせることでDocker Composeをより便利に使うことができるのではないでしょうか。
例えば、AWS Copilotを用いて開発時の動作確認用の環境(Environment)を作成することでVPC/Subnetといったネットワーク環境やECSクラスターを用意しておき、アプリケーション開発者は "docker-compose.yml" でデプロイ先を指定することで開発中のアプリケーションのコンテナをECS環境で動作確認できるようにする、といった運用も考えられるでしょう。
これができたらかなりアツい。AWSリソースの管理者にとっても、アプリケーション開発者にとっても、楽しい未来が実現できそうですね!
コンテナオーケストレーションのツールとしてKubernetesも面白いですが、Amazon ECSも引き続きどんどん面白くなっていきそうです。
以上、コンサル部のtobachi(@toda_kk)でした。